package cz.muni.fi.pa165.api;

import cz.muni.fi.pa165.api.dto.PickerDTO;
import java.util.List;

/**
 * PickerService interface provides a set of business methods for manipulation
 * and retrieval of pickers in form of DTO objects
 *
 * @author Matej Cimbora
 */
public interface PickerService {

    /**
     * Creates a new picker
     *
     * @param pickerDTO Picker to be created
     */
    public void createPicker(PickerDTO pickerDTO);

    /**
     * Updates a picker
     *
     * @param pickerDTO Picker to be updated
     */
    public void updatePicker(PickerDTO pickerDTO);

    /**
     * Removes a picker
     *
     * @param pickerDTO Picker to be removed
     */
    public void deletePicker(PickerDTO pickerDTO);

    /**
     * Retrieves picker by id
     *
     * @param id Picker's id
     * @return DTO object representing picker with given id
     */
    public PickerDTO getPicker(Long id);

    /**
     * Retrieves all existing pickers
     *
     * @return List of all existing pickers
     */
    public List<PickerDTO> findAllPickers();

    /**
     * Retrieves picker by his unique nickname
     *
     * @param nickName Picker's nickname
     * @return DTO object representing picker with given nickname
     */
    public PickerDTO findPickerByNickName(String nickName);

    /**
     * Retrieves all existing pickers with given first name
     *
     * @param firstName Pickers' first name
     * @return List of all pickers with given first name
     */
    public List<PickerDTO> findPickersByFirstName(String firstName);

    /**
     * Retrieves all existing pickers with given last name
     *
     * @param lastName Pickers' last name
     * @return List of all pickers with given last name
     */
    public List<PickerDTO> findPickersByLastName(String lastName);
}
